<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>GTK+ 简介</title>
<link rel="stylesheet" href="/cfg/format.css" type="text/css">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="keywords" content="GUI, Introduction to GTK+, GTK+ library, C">
<meta nam="description" content="Introduction to GTK+">
<meta name="language" content="zh, en">
<meta name="author" content="Jan Bodnar">
<meta name="distribution" content="global">

<script type="text/javascript" src="/lib/jquery.js"></script>
<script type="text/javascript" src="/lib/common.js"></script>

</head>

<body>

<div class="container">

<div id="wide_ad" class="ltow">
<script type="text/javascript"><!--
google_ad_client = "pub-9706709751191532";
/* 160x600, August 2011 */
google_ad_slot = "2484182563";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>


<div class="content">


<a href="/" title="Home">Home</a>&nbsp;
<a href="..">Contents</a>


<h1>GTK+ 简介</h1>


<h2>关于本初级教程l</h2>

<p>
本GTK+程序初级教程采用了“引导”式的方法来教你如何使用GTK+。本教程所用的编程语言为C语言。并且整个教程中方法已经在Linux中测试通过。本教程适用GTK+的初级兼代中级水平的程序员。 
</p>


<h2>GTK+</h2>

<p>
<img src="../images/gtk.png" style="float: left; margin-right:10px"><b class="keyword">GTK+</b> 是一种函数库是用来帮助制作图形交互界面的。整个函数库都是由C语言来编写的。 GTK+函数库通常也叫做 GIMP 工具包。因为，一开始GTK+是用来编写“GIMP” –这个图形处理软件的。 从那以后， GTK+就逐渐成为了Linux and BSDUnix下最受欢迎的用于图形交互界面（GUI）设计的工具包之一。时至今日,大多数的Linux下的GUI软件（有图形交互界面）都是由GTK+或者QT来编写的。GTK+是一种面向对象式的 API(applicationprogramming interface)。Glib是GTK+的基础，而这种“面向对象系统”正是由“Glib”来提供的。
<b class="keyword">GObject</b> 也就是这种面向对象的机制可以为 GTK+绑定很多种开发语言。目前存在的语言有：C++, Python, Perl, Java, C#，PHP,等其他高级语言。
</p>

<div class="center"> 
<script type="text/javascript"><!--
google_ad_client = "pub-9706709751191532";
/* horizontal */
google_ad_slot = "1734478269";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script> 
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
</script> 
</div>

<p>
GTK+ 和以下“函数库”存在着依赖关系 
</p>

<ul>
<li>Glib</li>
<li>Pango</li>
<li>ATK</li>
<li>GDK</li>
<li>GdkPixbuf</li>
<li>Cairo</li>
</ul>

<p>
<b class="keyword">Glib</b>  是一种通用的函数库。她提供了各种各样的语言特性，譬如说：各种数据类型，字符串函数，错误通知，消息队列和线程。 
<b class="keyword">Pango</b> 是一种函数库，用来实现国际化和本地化的功能。
<b class="keyword">ATK</b>一种平易近人的工具函数包，她提供了快捷键服务为肢体有缺陷的人使用电脑提供了便利。 
<b class="keyword">GDK</b> 是一种函数库，她为整个GTK+图形库系统提供了一些底层的“图形实现”和“窗口实现”的方法。在Linux中GDK是位于X服务器和GTK+函数库之间的。在最近的GTK+发行版本中，越来越多的功能性函数，都交给了Cairo函数库来处理。 
<b class="keyword">GdkPixbuf</b> 函数库是一种函数库工具包用于加载图像和维护图像“缓存”的（pixel buffer）。
<b class="keyword">Cairo</b>是一种函数库用于制作二维图像。从GTK+2.8版本以后，Cairo就正式成为GTK+系统中的一员了。
</p>

<p>
Gnome and XFce 桌面环境系统都是用GTK+来编程实现的. SWT and wxWidgets 是种很著名的编程框架,也是用GTK+来编程实现的。最杰出的GTK+软件的代表是Firefox （火狐浏览器）和 Inkscape。 

</p>

<h2>编译 GTK+ 应用程序</h2>

<p>
有一个非常方便的工具--"pkg-config",可以帮助我们编译GTK+的应用程序。<b class="keyword">pgk-config</b>可以提供各种安装函数库（譬如GDK,Pango等）的位置。简单点说,就是我们如果想使用某种函数库，Pkg-config就会为我们提供所需要的lib与include文件的位置。 pkg-config 是从一些通常以“.pc”结尾的文件中，得到所需要的信息的。 

</p>

<pre class="code">
 gcc -o simple simple.c `pkg-config --libs --cflags gtk+-2.0`
</pre>

<p>
上面的编译命令，就是在展示我们如何去编译一个简单的源文件——“simple.c”。
</p>

<pre class="code">
$ pkg-config --cflags gtk+-2.0
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 
-I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12  
</pre>

<p>
上面列出了pkg-config为你自动提供的编译所需要的include文件的信息。
</p>

<pre class="code">
$ pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 
-lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr 
-lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 
-lgmodule-2.0 -ldl -lglib-2.0 
</pre>

<p>
上面列出了pkg-config为你自动提供的编译所需要的lib文件的信息。 
</p>

<h2>Sources</h2>

<ul>
<li><a href="http://www.gtk.org">gtk.org</a></li>
<li><a href="http://www.gtkforums.com">gtkforums.com</a></li>
<li>GTK+ / Gnome application development</li>
</ul>

<div class="center"> 
<script type="text/javascript"><!--
google_ad_client = "pub-9706709751191532";
/* horizontal */
google_ad_slot = "1734478269";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script> 
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
</script> 
</div>


<div class="botNav, center">
<span class="botNavItem"><a href="/">Home</a></span> ‡ <span class="botNavItem"><a href="..">Contents</a></span> ‡
<span class="botNavItem"><a href="#">Top of Page</a></span>
</div>


<div class="footer">
<div class="signature">
<a href="/">ZetCode</a> last modified March 30, 2008  <span class="copyright">&copy; 2007 - 2012 Jan Bodnar</span>
<span class="copyright">Translation &copy; 2008 chinalmy</span>
</div>
</div>

</div> <!-- content -->

</div> <!-- container -->

</body>
</html>
